80 TEXT : SPEED= 255: HOME : VTAB 12: HTAB 14: FLASH : PRINT "SPACE ROVER": NORMAL
90 REM POKE IN 'WRAP AROUND'
100 DATA 169,49,133,29,198,29,198,29,164,29,185,72,80
110 DATA 133,26,136,185,72,80,133,30,162,8,134,28
120 DATA 198,28,166,28,189,120,80,24,101,30,133
130 DATA 27,160,0,177,26,72,160,1,177,26,136,145
140 DATA 26,200,200,192,40,208,245,104,160,39,145
150 DATA 26,165,28,208,217,164,29,136,208,191,76
160 DATA 0,80,35,208,35,80,34,208,34,80,33,208
170 DATA 33,80,32,208,32,80,35,168,35,40,34,168,34
180 DATA 40,33,168,33,40,32,168,32,40,35,128,35
190 DATA 0,34,128,34,0,33,128,33,0,32,128,32,0,0
200 DATA 4,8,12,16,20,24,28,255
210 FOR J = 0 TO 127
220 READ K: POKE 20480 +J,K
230 NEXT J
240 REM END OF POKING IN 'WRAP AROUND'
290 DATA 1,0,4,0,46,46,46,46,45,37,44,36,37,37,37
300 DATA 45,53,53,53,53,46,54,45,45,44,44,44,148
310 DATA 210,219,51,46,46,54,29,199,24,24,8,1,24
320 DATA 63,63,63,63,63,63,63,54,55,55,126,5,0
330 FOR J = -1 TO 52
340 READ K
350 POKE 6 *4096 +J,K
360 NEXT J
370 POKE 232,0: POKE 233,96: REM LOCATION OF SHAPE TABLE - $6000
390 REM END OF POKING IN SHAPE TABLE
420 DEF FN R(N) = INT( RND(1) *N) +1: REM RETURN A RANDOM NUMBER FROM 1 TO X
430 DIM LND(279),RNK$(7)
435 FOR J = 0 TO 7: READ RNK$(J): NEXT
440 TEXT
450 GOSUB 2500
455 IF LEVEL = 1 THEN GOSUB 2000
458 ST = 0:AL = 1
459 PLIM = 100:PASS = 0: IF LEVEL >2 THEN PLIM = INT(21/LEVEL)
460 POKE 20481,27
470 POKE 20549,96: REM INSERT "RTS"
480 MDPT = 151:LEVEL = INT(LEVEL)
490 HGR : POKE -16302,0: REM FULL SCREEN GRAPHICS
500 HCOLOR= 3
510 SIGN = 1
520 HGT = MDPT: HPLOT 0,0 TO 0,HGT:LND(0) = HGT
530 CH = 3:LIMIT = 116
540 FOR J = 1 TO 100
550 IF FN R(4) < >1 THEN 580
560 SIGN = FN R(2): IF SIGN = 2 THEN SIGN = -1
570 CH = SIGN * FN R(3)
580 HGT = HGT +CH
590 IF HGT <LIMIT THEN HGT = LIMIT
600 IF HGT >191 THEN HGT = 191
610 HPLOT J,0 TO J,HGT
620 LND(J) = HGT
630 NEXT J
640 LAST = HGT:LIMIT = 87
650 K = 6
660 FOR J = 101 TO 106
670 LND(J) = LAST -(LAST -87)/K: HPLOT J,0 TO J,LND(J)
680 K = K -1: NEXT J
690 IF LEVEL >2 THEN 790
700 SPAN = 4/LEVEL *21
710 FOR J = 106 TO 106 +SPAN
720 LND(J) = 87: HPLOT J,0 TO J,LND(J)
730 NEXT J
740 K = 2
750 FOR J = 106 +SPAN TO 111 +SPAN
760 LND(J) = LAST -(LAST -87)/K: HPLOT J,0 TO J,LND(J)
770 K = K +1: NEXT J
780 GOTO 1010
790 REM FORM A CREVICE
800 IF LEVEL = 3 THEN SPAN = 29:CREVICE = 6
810 IF LEVEL = 4 THEN SPAN = 19:CREVICE = 8
820 IF LEVEL = 5 THEN SPAN = 9:CREVICE = 10
830 IF LEVEL = 6 THEN SPAN = 3:CREVICE = 16
840 IF LEVEL = 7 THEN SPAN = 1:CREVICE = 17
850 FOR J = 106 TO 106 +SPAN
860 LND(J) = 87: HPLOT J,0 TO J,LND(J)
870 NEXT J
880 K = 1
890 FOR J = 106 +SPAN TO 106 +SPAN + INT(CREVICE/2)
900 LND(J) = LIMIT +K: HPLOT J,0 TO J,LND(J):K = K +1
910 NEXT J:K = K -2
920 FOR J = 107 +SPAN + INT(CREVICE/2) TO 106 +SPAN +CREVICE
930 LND(J) = LIMIT +K: HPLOT J,0 TO J,LND(J):K = K -1
940 NEXT J
950 IF LEVEL = 7 THEN SUB = 1: GOTO 970
960 SUB = 0
970 FOR J = 107 +SPAN +CREVICE TO 106 +2 *SPAN +CREVICE -SUB
980 LND(J) = 87: HPLOT J,0 TO J,LND(J)
990 NEXT J
1000 SPAN = 1 +2 *SPAN +CREVICE: GOTO 740
1010 LIMIT = 101
1020 HGT = LAST
1030 CH = 3:LIMIT = 116
1040 FOR J = 111 +SPAN TO 274
1050 IF FN R(4) < >1 THEN 1080
1060 SIGN = FN R(2): IF SIGN = 2 THEN SIGN = -1
1070 CH = SIGN * FN R(3)
1080 HGT = HGT +CH
1090 IF HGT <LIMIT THEN HGT = LIMIT
1100 IF HGT >191 THEN HGT = 191
1110 HPLOT J,0 TO J,HGT
1120 LND(J) = HGT
1130 NEXT J
1140 LIM = LIM +4
1150 LAST = HGT
1160 DF = MDPT -HGT:K = 5:C = 39
1170 FOR J = 275 TO 279
1180 HGT = LAST +DF/K: HPLOT J,0 TO J,HGT
1190 LND(J) = HGT
1200 K = K -1
1210 NEXT J
1220 REM FINISHED DRAWING LAND
1230 LIMIT = 87
1240 SCALE= 1: ROT= 0:X = 139:C = 1
1250 XS = -1:YS = 0: REM SET INITIAL SPEED
1260 Y = LIMIT/2: REM Y-COORDINATE
1270 HCOLOR= 0: IF XS = 0 AND YS = 0 THEN DRAW 1 AT X,Y: PRINT "":ST = ST +1: GOTO 1350
1280 XOLD = X:X = X +XS:YOLD = Y:Y = Y +YS
1290 IF X <0 THEN X = 280 +X:PASS = PASS +1: IF PASS >PLIM THEN X = XOLD:Y = YOLD:M$ = "TOO MANY PASSES": GOTO 1490
1300 IF Y <3 THEN Y = 3:YS = 0
1310 IF X >279 THEN X = X -280
1320 IF Y >78 THEN AL = 0: GOTO 1430
1330 DRAW 1 AT X,Y
1340 HCOLOR= 3: DRAW 1 AT XOLD,YOLD
1350 CALL 20480:C = C +1: IF C = 40 THEN C = 0
1355 IF ST = INT(21/LEVEL) THEN M$ = "SHIP NOT MOVING": GOTO 1490
1360 K = PEEK( -16384): POKE -16368,0: IF K >127 THEN 1380
1370 GOTO 1270
1380 IF K = 202 THEN XS = XS -1
1390 IF K = 203 THEN XS = XS +1
1400 IF K = 201 THEN YS = YS -1
1410 IF K = 205 THEN YS = YS +1
1420 GOTO 1270
1430 PLACE = C *7 +X +3: IF PLACE >279 THEN PLACE = PLACE -280
1440 CALL 20480: DRAW 1 AT X,Y: HCOLOR= 3: DRAW 1 AT XOLD,YOLD
1450 IF LND(PLACE) < >LIM THEN 1490
1460 PLACE = PLACE +19: IF PLACE >279 THEN PLACE = PLACE -280
1470 IF LND(PLACE) < >LIM THEN 1490
1480 TEXT : HOME : FLASH : VTAB 12: HTAB 9: PRINT "SUCCESSFUL LANDING": NORMAL : FOR P = 1 TO 600: NEXT P: POKE -16304,0:GOOD = GOOD +1:SUC = 1:M$ = "SOFT LANDING": GOTO 1500
1490 TEXT : HOME : VTAB 12: HTAB 15: PRINT "C R A S H !!!": FOR P = 1 TO 600: NEXT P: POKE -16304,0:BAD = BAD +1:SUC = 0: IF AL = 0 THEN M$ = "MISSED!"
1491 HCOLOR= 3: FOR P = 1 TO 500: NEXT P: DRAW 1 AT X,Y:R = 0
1494 FOR YN = Y TO 191 STEP 3:R = R +1: ROT= R: XDRAW 1 AT X,YN: IF R < >1 THEN ROT= R -1: XDRAW 1 AT X,YN -3
1496 NEXT
1500 POKE -16386,0: GET A$
1510 TEXT : HOME
1520 IF SUC = 1 THEN LEVEL = LEVEL +1:MIS = 0
1530 IF LEVEL = 8 THEN 1700
1540 IF SUC = 0 THEN MIS = MIS +1: IF MIS = 2 THEN LEVEL = LEVEL -1:MIS = 0
1550 IF LEVEL = 0 THEN 1800
1560 PRINT "RANK AFTER MISSION: ";RNK$(LEVEL)
1570 PRINT : PRINT "SUCCESSFUL LANDINGS = ";GOOD
1580 PRINT "CRASHES"; SPC( 13);"= ";BAD
1581 FLASH
1582 VTAB 9: IF SUC = 0 AND MIS = 0 THEN HTAB 14: PRINT "DEMOTED!!": NORMAL
1583 IF SUC = 1 THEN HTAB 8: PRINT "P R O M O T E D !!!"
1584 NORMAL
1585 VTAB 12: PRINT "LEVELS:": PRINT : FOR J = 1 TO 7: PRINT J;") ";RNK$(J): NEXT